package org.wishwork.api.order.upload.request;

import lombok.*;
import org.wishwork.api.order.upload.Pay;

import java.math.BigDecimal;
import java.util.List;

/**
 * @description: 订单上传(推荐)
 * @author: WangYX
 * @create: 2022-04-13 15:49
 * @Version: 1.0.0
 **/
@ToString
@EqualsAndHashCode
@Getter
@Builder
public class OrderUploadRequest {

    /**
     * 必填
     * 店铺编号
     */
    @NonNull
    private Integer shopId;

    /**
     * 必填
     * 线上订单号, 长度 <= 50
     */
    @NonNull
    private String soId;

    /**
     * 必填
     * 订单日期
     */
    @NonNull
    private String orderDate;

    /**
     * 必填
     * 订单： 等待买家付款=WAIT_BUYER_PAY，
     * 等待卖家发货=WAIT_SELLER_SEND_GOODS,
     * 等待买家确认收货=WAIT_BUYER_CONFIRM_GOODS,
     * 交易成功=TRADE_FINISHED,
     * 付款后交易关闭=TRADE_CLOSED,
     * 付款前交易关闭=TRADE_CLOSED_BY_TAOBAO；
     * 发货前可更新
     */
    @NonNull
    private String shopStatus;

    /**
     * 必填
     * 买家帐号 长度 <= 50
     */
    @NonNull
    private String shopBuyerId;

    /**
     * 必填
     * 收货省份 长度 <= 50；发货前可更新
     */
    @NonNull
    private String receiverState;

    /**
     * 必填
     * 收货市 长度<=50；发货前可更新
     */
    @NonNull
    private String receiverCity;

    /**
     * 必填
     * 收货区/街道 长度<=50；发货前可更新
     */
    @NonNull
    private String receiverDistrict;

    /**
     * 必填
     * 收货地址 长度<=200；发货前可更新
     */
    @NonNull
    private String receiverAddress;

    /**
     * 必填
     * 收件人 长度<=50；发货前可更新
     */
    @NonNull
    private String receiverName;

    /**
     * 必填
     * 联系电话 长度<=50；发货前可更新
     */
    @NonNull
    private String receiverPhone;

    /**
     * 非必填
     * 手机 长度<=50；发货前可更新
     */
    private String receiverMobile;

    /**
     * 必填
     * 应付金额，保留两位小数，单位元）
     */
    @NonNull
    private BigDecimal payAmount;

    /**
     * 必填
     * 运费
     */
    @NonNull
    private BigDecimal freight;

    /**
     * 非必填
     * 买家留言 长度<=400；可更新
     */
    private String buyerMessage;

    /**
     * 非必填
     * 卖家备注 长度<=150；可更新
     */
    private String remark;

    /**
     * 非必填
     * 是否货到付款
     */
    private Boolean isCod;

    /**
     * 必填
     * 订单修改日期
     */
    @NonNull
    private String shopModified;

    /**
     * 非必填
     * 快递单号
     */
    private String lId;

    /**
     * 非必填
     * 快递公司名称
     */
    private String logisticsCompany;

    /**
     * 非必填
     * 订单异常描述
     */
    private String questionDesc;

    /**
     * 非必填
     * 卖家标签（旗帜），可选1:red, 2:yellow, 3:green, 4:blue, 5:purple
     */
    private Integer sellerFlag;

    /**
     * 非必填
     * 发货日期
     */
    private String sendDate;

    /**
     * 非必填
     * 订单多标签 长度<=200 以逗号分隔，单个标签不能超过十个字符
     */
    private String labels;

    /**
     * 非必填
     * 快递公司编码
     */
    private String lcId;

    /**
     * 非必填
     * 收货国家 长度<=50
     */
    private String receiverCountry;

    /**
     * 非必填
     * 邮政编码
     */
    private String receiverZip;

    /**
     * 非必填
     * 货币代码，跨境自有平台可使用
     */
    private String currency;

    /**
     * 非必填
     * 发票类型：
     * 个人电子普通;
     * 单位电子普通;
     * 个人纸质普通;
     * 单位纸质普通;
     * 个人电子增值税;
     * 单位电子增值税;
     * 个人纸质增值税;
     * 单位纸质增值税
     */
    private String invoiceType;

    /**
     * 非必填
     * 发票抬头
     */
    private String invoiceTitle;

    /**
     * 非必填
     * 发票税号
     */
    private String buyerTaxNo;

    /**
     * 非必填
     * 线下备注
     */
    private String node;

    /**
     * 非必填
     * 收货街道
     */
    private String receiverTown;

    /**
     * 专票信息
     */
    private Invoice invoice;

    /**
     * 身份证信息；非必填节点
     */
    private Card card;

    /**
     * 商品明细
     */
    @NonNull
    private List<Item> items;

    /**
     * shop_status=WAIT_BUYER_PAY 的时候可不给
     */
    private Pay pay;


}
